package com.company.array;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * @author jrue
 * @description https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
 * @date 2019/11/18 15:39
 * 给定两个数组，编写一个函数来计算它们的交集。
 *
 * 输出结果中每个元素出现的次数，应与元素在两个数组中出现的次数一致。
 * 我们可以不考虑输出结果的顺序。
 */
public class Intersect {

    public static void main(String[] args) {
        int[] intersect = intersect(new int[]{1, 2, 2, 1}, new int[]{3,3});

        for (int i : intersect) {
            System.out.println(i);
        }
    }


    public static int[] intersect(int[] nums1, int[] nums2) {
        int[] res = new int[Math.min(nums1.length,nums2.length)];
        Arrays.sort(nums1);
        Arrays.sort(nums2);

        int len = 0;
        int i1=  0,i2 = 0;
        while (i1 != nums1.length && i2 != nums2.length) {

            if (nums1[i1] == nums2[i2]) {
                res[len++] = nums1[i1];
                i1++;
                i2++;
            } else if (nums1[i1] > nums2[i2]){
                i2++;
            } else {
                i1++;
            }

        }


        return Arrays.copyOf(res,len);
    }

}
